﻿using System;
using BasicFramework.Enums;

namespace BasicFramework.Scenes
{
    public interface IScene : IDisposable
    {
        /// <summary>
        /// Returns the Name of the scene
        /// </summary>
        string Name { get; }
        /// <summary>
        /// Returns the GuID of the Scene.
        /// </summary>
        Guid GUID { get; }
        /// <summary>
        /// Returns the State of the Scene.
        /// </summary>
        SceneState State { get; }
        /// <summary>
        /// Initialized is called after the Scene was added to the Scene Manager.
        /// </summary>
        void Initialize();
        /// <summary>
        /// Start is called after the State of the Scene is set to Running.
        /// </summary>
        void Start();
        /// <summary>
        /// Stop is called after the State of the Scene is set to Stopped
        /// </summary>
        void Stop();
        /// <summary>
        /// Paused is called after the State of the Scene is set to Paused.
        /// </summary>
        void Paused();
        /// <summary>
        /// Resume is called after the State of the Scene is set from Paused to Running.
        /// </summary>
        void Resume();
        /// <summary>
        /// Update Method, is called for every Frame
        /// </summary>
        void Update(float frame);

    }
}
